#include<iostream>
#include<cstdio>
#include<string>
#include<pthread.h>
#include<unistd.h>
#include<sys/types.h>

std::string Formatid(pthread_t &tid)
{
    char id[64];
    snprintf(id,sizeof(id),"0x%lx",tid);
    return id;
}

void showtid(pthread_t &tid)
{
    std::cout<< Formatid(tid) <<std::endl;
}

void *routine(void* args)
{
    std::string name = (const char*)args;
    pthread_t tid = pthread_self();
    int cnt=5;
    while(cnt--)
    {
        std::cout<<"我是一个新线程，name："<<name<<std::endl;
        std::cout<<"tid: "<<tid<<std::endl;
        sleep(1);
    }

    return (void*)100;
}

int main()
{
    pthread_t tid;
    int n = pthread_create(&tid,NULL,routine,
                (void*)"thread-1");
    (void)n;

    showtid(tid);

    pthread_t maintid = pthread_self();
    int cnt=5;
    while(cnt--)
    {
        std::cout<<"我是一个主线程"<<std::endl;
        std::cout<<"maintid: "<<maintid<<std::endl;
        sleep(1);
    }
    void* tptr=NULL;
    pthread_join(tid,&tptr);
    std::cout<<tptr<<std::endl;
    return 0;
}
// void* ThreadRun(void* args)
// {
//     std::string name = (const char*)args;
//     while(1)
//     {
//         std::cout<<"我是新进程！my name : "<<name<<" mypid: "<<getpid()<<std::endl;
//         sleep(1);
//     }
//     return NULL;
// }

// int main()
// {
//     pthread_t tid;
//     //            线程id
//     pthread_create(&tid, NULL,ThreadRun,(void*)"thread-1");

//     while(1)
//     {
//         std::cout<<"我是主进程"<<std::endl;
//         sleep(1);
//     }

//     return 0;
// }